package com.westvalley.common.action.util;

import weaver.general.Util;
import weaver.soa.workflow.request.Cell;
import weaver.soa.workflow.request.DetailTable;
import weaver.soa.workflow.request.MainTableInfo;
import weaver.soa.workflow.request.Property;
import weaver.soa.workflow.request.Row;

import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
import com.westvalley.common.kit.StringKit;

public class WorkFlowActionUtil {
	
	public static final String NULL = "";
	
	
	/**
	 * 获取主表字段的值
	 * @param mainTableInfo 主表mainTableInfo对象
	 * @param name 字段名
	 * @return value 值
	 */
	public static String getFieldValue(MainTableInfo mainTableInfo, String name){
		if( mainTableInfo!=null && StringKit.notBlank(name) ){
			return getFieldValue( mainTableInfo.getProperty(), name );
		}
		return NULL;
	}
	
	/**
	 * 获取主表字段的值
	 * @param propertys 主表Property数组
	 * @param name 字段名
	 * @return value 值
	 */
	public static String getFieldValue(Property[] propertys, String name){
		if( propertys!=null && StringKit.notBlank(name) ){
			for(Property property : propertys){
				if(Util.null2String(name).equalsIgnoreCase(property.getName()))
					return Util.toExcelData(property.getValue()).trim();
			}
		}
		return NULL;
	}
	
	/**
	 * 获取明细表字段的值
	 * @param detailTable 明细表detailTable对象
	 * @param rowIndex	行号
	 * @param name 字段名
	 * @return value 值
	 */
	public static String getFieldValue(DetailTable detailTable,int rowIndex, String name){
		if( detailTable!=null && StringKit.notBlank(name) ){
			return getFieldValue(detailTable.getRow(rowIndex),name);
		}
		return NULL;
	}
	
	/**
	 * 获取明细表字段的值
	 * @param row 明细表row对象
	 * @param name	字段名
	 * @return value 值
	 */
	public static String getFieldValue(Row row, String name){
		if( row!=null && StringKit.notBlank(name) ){
			return getFieldValue(row.getCell(),name);
		}
		return NULL;
	}
	
	
	/**
	 * 获取明细表字段的值
	 * @param Cell 明细表Cell数组
	 * @param name 字段名
	 * @return value 值
	 */
	public static String getFieldValue(Cell[] cells, String name){
		if( cells!=null && StringKit.notBlank(name) ){
			for(Cell cell : cells){
				if(StringKit.equalsIgnoreCase(name, cell.getName()))
					return StringKit.trim(cell.getValue());
			}
		}
		return NULL;
	}
	
	/**
	 * 获取流程主表对应数据库表名
	 * @param workflowId 流程ID
	 * @return 数据库表名
	 */
	public static String getDbMainTableName(String workflowId){
		String sql = "select tablename from workflow_bill where id in(select formid from workflow_base where id= ? )";
		Record record = Db.findFirst(sql,workflowId);
		if(record!=null){
			return StringKit.trim(record.getStr("tablename"));
		}
		return NULL;
	}
}
